package LambdaLearn;

public class lanbda表达式 {
    public static void main(String[] args) {
        /*
        lannbda表达式的注意点:
        1:lanbda表达式可以用来简化匿名内部类
        2:lanbda表达式只能用来简化函数式接口的匿名内部类的写法
        3:函数式接口:
            有且只有一个抽象方法的接口叫做函数式接口，该接口可以加 @FunctionalInterface 进行注释
         */
        //1.利用匿名内部类的形式来调用下面的方法
        //调用一个方法的时候，如果方法的形参是一个接口，那么我们要传递这个接口的实现类对象
        //如果实现类对象只要用到一次，就可以用匿名内部类的形式进行书写
       /* method(new Swin(){
            @Override
            public void swimming(){
                System.out.println("正在游泳!");
            }
        });*/

        //利用lanbda表达式进行改写
        method(
                ()->{
                    System.out.println("正在游泳!");
                }
        );
    }
    public static void method(Swim s){
        s.swimming();
    }
}
@FunctionalInterface
interface  Swim{
    public abstract void swimming();
}

